Skip to content

release: v10.15.0 — JP3DDecoder.preWarm discoverable convenience API#451

Merged
SureshKViswanathan merged 1 commit into
mainfrom
v10.15.0-release-candidate
May 25, 2026
Merged

release: v10.15.0 — JP3DDecoder.preWarm discoverable convenience API#451
SureshKViswanathan merged 1 commit into
mainfrom
v10.15.0-release-candidate

Conversation

@SureshKViswanathan

Copy link
Copy Markdown
Contributor

Summary

  • JP3DDecoder.preWarm() + JP3DROIDecoder.preWarm() — thin convenience wrappers around the existing J2KDecoder.preWarm() (v5.28.0). Closes a discoverability gap for consumers using J2K3D alone.
  • −13.93 ms cold-start savings (M2 release, mr_3d_small 128×128×16 LCG JP3D fixture). Clears 3 ms acceptance threshold.
  • MINOR / additive surface, codestream byte-identical to v10.14.0. Pivots OUTSIDE the iDWT optimization space after two consecutive research-arc washes (v10.24 + v10.25 — 14th + 15th lever-ceiling confirmations).

Correctness gate (release mode)

Suite Tests Result
V10_26_JP3DPreWarmProfile (cold-vs-warm A/B) 1/1 PASS
swift test --filter JP3D regression 520/520 PASS
J2KMedicalCorpusEncodePerformanceTests 2/2 PASS
J2KMedicalCorpusPerformanceTests 2/2 PASS
J2KStrictCrossCodecValidationTests 3/3 PASS

Test plan

  • Mandatory pre-release gate (encode-perf + decode-perf + cross-codec parity)
  • V10_26 cold-vs-warm A/B (−13.93 ms savings verified)
  • JP3D regression sweep (520 tests, no regression)
  • Codestream byte-equality vs v10.14.0 (no codec hot-path change)

Companion documents

  • RELEASE_NOTES_v10.15.0.md — full release notes
  • The two preceding research arcs (v10.24 + v10.25 ROI iDWT washes) stay on their research branches per feedback_research_no_main_merge.md.

🤖 Generated with Claude Code

Pivots OUTSIDE the iDWT optimization space after two consecutive
research-arc washes (v10.24 + v10.25, both confirmed on M2 + Swift
release lever-ceiling). Adds JP3DDecoder.preWarm + JP3DROIDecoder.preWarm
as thin convenience wrappers around the existing J2KDecoder.preWarm
(v5.28.0). Same one-shot Metal init savings, discoverable from the
JP3D module surface.

V10_26_JP3DPreWarmProfile (M2 release, mr_3d_small 128×128×16 LCG
JP3D fixture):
  First decode in process     : 28.26 ms  (cold; includes Metal init)
  First after preWarm()       : 14.60 ms
  Warm median (5 trials)      : 14.33 ms
  Cold-start savings          : −13.93 ms  (clears 3 ms gate)

Savings are CONSTANT per process (one-shot init cost) so they're
most visible on small-volume JP3D decodes where the warm decode
wall itself is short. For consumers doing one-shot JP3D decodes
(e.g., a DICOM viewer opening one study), this is a real-world
latency win delivered through a discoverable API.

Architecture: 2-line static functions in JP3DDecoder.swift +
JP3DROIDecoder.swift, each delegating to
J2KDecoder.preWarm(includeWarmupDispatch:). JP3D shares
J2KMetalSession.processShared via per-slice 2D codec delegation —
the savings flow automatically; v10.15.0 just makes the entry
point discoverable from `import J2K3D` alone.

Validation:
  - V10_26_JP3DPreWarmProfile 1/1 PASS (cold-vs-warm A/B + verifies
    JP3DDecoder.preWarm wires through correctly)
  - swift test --filter JP3D regression 520/520 PASS
  - Mandatory commit gate (release mode) 7/7 PASS

API surface — additions only:
  public static func JP3DDecoder.preWarm(includeWarmupDispatch:Bool=false) async
  public static func JP3DROIDecoder.preWarm(includeWarmupDispatch:Bool=false) async

No removals, no signature changes, no perf change on warm paths.
Codestream bytes byte-identical to v10.14.0. MINOR per RELEASING.md
— additive public API for discoverability + measured cold-start
savings on the JP3D corpus.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
@SureshKViswanathan SureshKViswanathan merged commit 9a2286e into main May 25, 2026
13 of 16 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant